using Senparc.Weixin.Entities;
using System;
namespace Senparc.Weixin.Context
{
	public interface IMessageContext<TRequest, TResponse> where TRequest : IRequestMessageBase where TResponse : IResponseMessageBase
	{
		event EventHandler<WeixinContextRemovedEventArgs<TRequest, TResponse>> MessageContextRemoved;
		string UserName
		{
			get;
			set;
		}
		DateTime LastActiveTime
		{
			get;
			set;
		}
		MessageContainer<TRequest> RequestMessages
		{
			get;
			set;
		}
		MessageContainer<TResponse> ResponseMessages
		{
			get;
			set;
		}
		int MaxRecordCount
		{
			get;
			set;
		}
		object StorageData
		{
			get;
			set;
		}
		double? ExpireMinutes
		{
			get;
			set;
		}
		AppStoreState AppStoreState
		{
			get;
			set;
		}
		void OnRemoved();
	}
}
